Due to the multitude of ways that computers can be utilized nowadays, different users may require different capabilities in their computer systems. To configure a computer system to fit a particular user's needs, various attachable devices may be plugged into the communication bus of a typical computer system to endow it with the desired computing capabilities.
By way of example, in a typical desktop computer system employing an Intel-based processor (available from Intel Corporation of Santa Clara, Calif.) and a Windows-based operating system (available from Microsoft Corporation of Redmond, Wash.), a variety of attachable devices such as network interface cards and internal/external disk drives may be attached to the CPU (central processing unit) via the system bus. During the OS (operating system) installation process or upon the initial attachment of an attachable device, a device installation process is undertaken. During installation, the identification data associated with the attachable device is recorded with the OS (e.g., in the registry), along with the device configuration data provided by the user and/or automatically obtained by the OS. Installation is necessary since different devices may have different requirements, and the OS needs to know how to configure the devices during booting so that the devices can be properly utilized after boot up.
Consider an exemplary computer system having two network interface cards (NICs) connected to two different networks, for example. During installation, the identification data of the NICs (e.g., the MAC address in the case of an Ethernet card), along with any necessary configuration data, needs to be stored by the OS. During the subsequent system boot up, the OS looks up the identification data associated with each NIC and obtains the associated configuration data to configure each NIC to communicate properly with its respective network.
In the aforementioned Windows-based computer system, the OS is typically stored on a hard disk that is hardwired to the CPU, which is in turn hardwired to the set of attachable devices that make up the user's computer system. This is the typical situation with most desktop, laptop, and networked computers of today. After the attachable devices are installed, the OS generally expects to see the same set of attachable devices each time the computer system boots up.
Whenever the OS detects a new device whose identification data does not match with the identification data stored in the registry, the OS requires that either a manual or an automatic installation process be undertaken. Since the installation of a new device is a rather infrequent event for most users of computers today, the requirement has up to now been tolerated by most users.
It should be noted that although the term registry is often associated with the system configuration database in Microsoft OS products, it is intended here as a generic term referring to the equivalent datastore of any and all OS products, however they might be named or implemented. For example, a version of the Linux OS may store system configuration data in a variety of individual files, e.g., /etc/services, etc. In these cases, it is intended that these datastores be covered by the generic term registry.
A new computer technology, known as utility computing, has presented a different set of challenges. With utility computing, the user is no longer assigned to a fixed CPU, a fixed boot device (e.g., the hard disk on which the OS is stored) or a fixed set of attachable devices. In utility computing, a service provider provides the computer user with the required computing capability via a network connection, using hardware and software resources selected from a common pool or resources maintained by the service provider. For example, the service provider may maintain, for thousands of OS images associated with thousands of users, thousands of CPUs on different racks, a vast number of disk drives and network interface cards, the majority of which are networked to communicate with one another via networking technology. When the user logs in, the service provider ascertains the hardware/software resources available, selects from the available resources a subset that can furnish the computing capability required by the user, and configures the network to connect the selected subset of resources together so that the user can begin to utilize the furnished computing capability to accomplish his computing task.
Thus in utility computing, while the user can obtain the needed computing capability from the service provider, there is no guarantee that the user would be assigned the same CPU or the same set of attachable devices each time the user logs in. Note that the user is, however, still associated with a particular OS image. This is because the user generally wants the same computing experience and wants to access to the same set of tools and settings across different computing sessions.
Since the OS image, upon user log-in and boot up, may see a different set of attachable devices from the set of attachable devices employed in the last computing session, the OS image may perceive the need to initiate the installation process for the “new” devices. If the service provider maintains a large number of devices, the chance of a user being assigned the same device twice may be slim, and the user may need to endure the time-consuming installation processes for the various devices in the selected set almost every time the user logs in. Unless a solution is found, the repetitive and tedious installation processes tend to discourage most users after a few log in sessions, thereby hampering the adoption of utility computing.